package lambda;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * lambda示例3
 * <p>
 * 1-引用静态方法
 * 2-引用类方法
 *
 * @author <a href="mailto:sjj@jianzhimao.com">mojo</a>
 * copyright (C), 2013-2022, 广州九尾信息科技有限公司
 * @date 2022/12/12 14:19
 */
public class Lambda3 {
    public static void lambdaMethod(List<User> list, User.UserChecker checker) {
        for (User user : list) {
            if (checker.check(user)) {
                System.out.println(user);
            }

        }
    }

    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            list.add(new User("user" + i, new Random().nextInt(200)));
        }
        // 使用匿名内部类
        // lambdaMethod(list, user -> user.getAge() > 10 && user.getAge() < 100);
        // 使用静态方法实现
        // lambdaMethod(list, u -> Lambda3.check(u));
        // 引用静态方法
        lambdaMethod(list, Lambda3::check);
        System.out.println("=============================================");
        // 应用对象方法
        lambdaMethod(list, u -> new Lambda3().check1(u));
    }

    public static boolean check(User user) {
        return user.getAge() > 10 && user.getAge() < 100;
    }

    public boolean check1(User user) {
        return user.getAge() > 10 && user.getAge() < 100;
    }
}
